#pragma once
#include "DGeometry.h"

namespace Skill
{
	namespace Ode
	{
		ref class DMatrix4;
		ref class DVector3;
		ref class DSpace;

		namespace Geometries
		{			
			public ref class DCapsule : DGeometry
			{
			internal:

			public:
				DCapsule(DSpace^ space, dReal radius, dReal length);					
				
				VALUE_PROP_DECLARATION_GETSET(dReal,Radius);
				VALUE_PROP_DECLARATION_GETSET(dReal,Length);

				void SetParams(dReal radius, dReal length);
				void GetParams([OutAttribute]dReal %radius, [OutAttribute]dReal %length);

				///<summary>
				/// Return the depth of a point in a Capsule.
				///</summary>
				///<param name = "x"> The X coordinate of the point to test.</param>
				///<param name = "y"> The Y coordinate of the point to test.</param>
				///<param name = "z"> The Z coordinate of the point to test.</param>								
				dReal PointDepth(dReal x, dReal y, dReal z);
				///<summary>
				/// Return the depth of a point in a Capsule.
				///</summary>
				///<param name = "p"> Coordinate of the point to test.</param>
				dReal PointDepth(DVector3^ p);
			};
		}
	}
}